
#ifndef OLED_DISPLAY_H
#define OLED_DISPLAY_H

#include "struct_typedef.h"
	
    typedef enum
    {
        home = 0,  //主页
        f_f,   //第一页的第一行
        f_s,   //后面依次
        f_t,
        f_b,   //返回主页
        f_f_f,
        f_f_s,
        f_f_t,
        f_f_b,  //返回菜单栏
        MENU_NUM  //菜单栏的长度
    }MENU_INDEX_LIST;

typedef struct 
{
    uint8_t  current_index;   //当前存放的索引号
    uint8_t  down_index;      //存放向下跳转的索引号
    uint8_t  up_index;        //存放向上跳转的索引号
    uint8_t enter_index;      //确认按键的索引号
    void (*operate)();        //函数指针变量，存放当前索引号下需要执行的函数的入口地址。
    /* data */
}key_index_t;


void home_show(void);

void f_f_show(void);
void f_s_show(void);
void f_t_show(void);
void f_b_show(void);

void f_f_f_show(void);
void f_f_s_show(void);
void f_f_t_show(void);
void f_f_b_show(void);

/**
 * @brief 创建菜单栏
 */
const static key_index_t  key_index[MENU_NUM] =
{
   {home,f_f,home,home,(*home_show)},  // 主菜单栏

   {f_f,f_s,f_b,f_f_f,(*f_f_show) },
   {f_s,f_t,f_f,f_f_s,(*f_s_show) },
   {f_t,f_b,f_s,f_f_t,(*f_t_show) },
   {f_b,f_f,f_t,home,(*f_b_show) },

   {f_f_f,f_f_s,f_f_b,f_f,(*f_f_f_show) },
   {f_f_s,f_f_t,f_f_f,f_f,(*f_f_s_show) },
   {f_f_t,f_f_b,f_f_s,f_f,(*f_f_t_show) },
   {f_f_b,f_f_f,f_f_t,f_f,(*f_f_b_show) },
		
};

  extern void display_init(void);
  extern void display_loop(void);
  void oled_show_windows(uint8_t page, uint8_t rows);
  void refresh_main_data(void);
#endif
